package com.farmer.announcement.service;

import com.farmer.common.entity.Announcement;
import com.farmer.common.result.Result;

/**
 * 公告服务接口
 */
public interface AnnouncementService {

    /**
     * 获取公告列表
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @param type 公告类型
     * @param keyword 搜索关键词
     * @param isPublished 是否发布
     * @return 公告列表
     */
    Result<?> getAnnouncementList(Integer pageNum, Integer pageSize, String type, String keyword, Integer isPublished);

    /**
     * 根据ID获取公告详情
     * @param announcementId 公告ID
     * @return 公告详情
     */
    Result<?> getAnnouncementById(Long announcementId);

    /**
     * 添加公告
     * @param announcement 公告信息
     * @return 添加结果
     */
    Result<?> addAnnouncement(Announcement announcement);

    /**
     * 更新公告
     * @param announcement 公告信息
     * @return 更新结果
     */
    Result<?> updateAnnouncement(Announcement announcement);

    /**
     * 删除公告
     * @param announcementId 公告ID
     * @return 删除结果
     */
    Result<?> deleteAnnouncement(Long announcementId);

    /**
     * 发布/取消发布公告
     * @param announcementId 公告ID
     * @param isPublished 是否发布
     * @return 操作结果
     */
    Result<?> publishAnnouncement(Long announcementId, Integer isPublished);

    /**
     * 获取最新公告
     * @param limit 数量限制
     * @return 最新公告列表
     */
    Result<?> getLatestAnnouncements(Integer limit);

    /**
     * 增加浏览次数
     * @param announcementId 公告ID
     * @return 操作结果
     */
    Result<?> incrementViewCount(Long announcementId);
} 